/*
 * (x - a_x)² + (y - a_y)² = (x - b_x)² + (y - b_y)² = (x - c_x)² + (y - c_y)² = r²
 *
 * For linear pre circle equation
 * ------------------------------
 * 2(a_x - b_x) x + 2(a_y - b_y) y = (a_x - b_x)(a_x + b_x) + (a_y - b_y)(a_y + b_y)
 * 2(a_x - c_x) x + 2(a_y - c_y) y = (a_x - c_x)(a_x + c_x) + (a_y - c_y)(a_y + c_y)
 *
 * For linear equation
 * -------------------
 * a_1 x + b_1 y = c_1
 * a_2 x + b_2 y = c_2
 * x = (c_1 b_2 - c_2 b_1) / (a_1 b_2 - a_2 b_1)
 * y = (c_1 a_2 - c_2 a_1) / - (a_1 b_2 - a_2 b_1)
 *
 */

#include <cstdio>
#include <cmath>


const double PI = 3.141592653589793;

typedef double eqarray[3];


struct Point
{
	double x, y;
};


inline void linear_pre_circle_equation (const Point &p1, const Point &p2, eqarray e)
{
	e[0] = p1.x - p2.x;
	e[1] = p1.y - p2.y;
	e[2] = e[0] * (p1.x + p2.x) + e[1] * (p1.y+ p2.y);
	e[0] *= 2;
	e[1] *= 2;
}

inline void linear_equation (eqarray e1, eqarray e2, Point &p)
{
	double denom = e1[0] * e2[1] - e2[0] * e1[1];
	p.x = e1[2] * e2[1] - e2[2] * e1[1];
	p.y = e1[2] * e2[0] - e2[2] * e1[0];
	p.x /= denom;
	p.y /= -denom;
}


inline double distance (const Point &p1, const Point &p2)
{
	double dx, dy;
	dx = p1.x - p2.x; dx *= dx;
	dy = p1.y - p2.y; dy *= dy;
	return sqrt (dx + dy);
}


struct Circle
{
	Point p[3], center;
	double circunference;

	inline void calculate_center ()
	{
		eqarray a, b;
		linear_pre_circle_equation (p[0], p[1], a);
		linear_pre_circle_equation (p[0], p[2], b);
		linear_equation (a, b, center);
	}

	inline void calculate_circunference ()
	{
		circunference = distance (p[0], center) * PI * 2;
	}

	inline bool readline () {
		return scanf (
			"%lf %lf %lf %lf %lf %lf",
			&p[0].x, &p[0].y,
			&p[1].x, &p[1].y,
			&p[2].x, &p[2].y
			) == 6;
	}
};


int main ()
{
	Circle c;

	while (c.readline ())
	{
		c.calculate_center ();
		c.calculate_circunference ();
		printf("%.2lf\n", c.circunference);
	}

	return 0;
}